#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ЗначениеХранилища = Неопределено;
	Если Параметры.Свойство("ХранилищеКонтейнераЗначения") Тогда
		ВозвратХранилищаДляКонтейнераЗначения = Истина;
		//@skip-check unknown-form-parameter-access
		ХранилищеКонтейнера = Параметры.ХранилищеКонтейнераЗначения;//см. УИ_ОбщегоНазначенияКлиентСервер.НовыйХранилищеЗначенияТипаХранилищеЗначения
		Если ХранилищеКонтейнера <> Неопределено Тогда
			ХранилищеДляЗначения = УИ_ОбщегоНазначения.ЗначениеИзХранилищаКонтейнераХранилищаЗначения(ХранилищеКонтейнера); //ХранилищеЗначения
			//@skip-check empty-except-statement
			Попытка
				ЗначениеХранилища = ХранилищеДляЗначения.Получить();
			Исключение
			КонецПопытки;
		КонецЕсли;
	ИначеЕсли Параметры.Свойство("ХранилищеЗначения") Тогда 
		//@skip-check unknown-form-parameter-access
		ХранилищеДляЗначения = Параметры.ХранилищеЗначения;
			//@skip-check empty-except-statement
		Попытка
			ЗначениеХранилища = ХранилищеДляЗначения.Получить();
		Исключение
		КонецПопытки;
	КонецЕсли;

	СтруктураХраненияПоля = УИ_ОбщегоНазначенияКлиентСервер.НовыйСтруктураХраненияРеквизитаНаФормеСКонейнером("Значение");

	УИ_ОбщегоНазначенияКлиентСервер.УстановитьЗначениеПоляСКонтейнером(ЭтотОбъект,
																	   СтруктураХраненияПоля,
																	   ЗначениеХранилища);
КонецПроцедуры



#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы


&НаКлиенте
Процедура ЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияНачалоВыбораЗначения(ЭтотОбъект,
																										  Элемент,
																										  "Значение");
	ПараметрыОбработчика.ДоступенКонтейнер = Истина;
	ПараметрыОбработчика.Значение = Значение;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ЭтотОбъект;
	ПараметрыОбработчика.НаборТипов = УИ_ОбщегоНазначенияКлиентСервер.ВсеНаборыТиповДляРедактирования();

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикНачалоВыбораЗначения(ПараметрыОбработчика, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура ЗначениеОчистка(Элемент, СтандартнаяОбработка)
	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияОчистка(ЭтотОбъект,
																							 Элемент,
																							 "Значение");
	ПараметрыОбработчика.ДоступенКонтейнер = Истина;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ЭтотОбъект;

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикОчистка(ПараметрыОбработчика, СтандартнаяОбработка);

КонецПроцедуры


&НаКлиенте
Процедура ЗначениеПриИзменении(Элемент)
	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияПриИзменении(ЭтотОбъект,
																								  Элемент,
																								  "Значение");
	ПараметрыОбработчика.ДоступенКонтейнер = Истина;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ЭтотОбъект;

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикПриИзменении(ПараметрыОбработчика);
КонецПроцедуры


#КонецОбласти

#Область ОбработчикиКомандФормы


&НаКлиенте
Процедура Применить(Команда)
	Если ВозвратХранилищаДляКонтейнераЗначения Тогда
		ВозвращаемоеЗначение = ХранилищеКонтейнераИзЗначенияФормы();
	Иначе
		ВозвращаемоеЗначение = ХранилищеЗначенияИзЗначенияФормы();
	КонецЕсли;
	Закрыть(ВозвращаемоеЗначение);
КонецПроцедуры
#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция ХранилищеКонтейнераИзЗначенияФормы()
	СтруктураХраненияПоля = УИ_ОбщегоНазначенияКлиентСервер.НовыйСтруктураХраненияРеквизитаНаФормеСКонейнером("Значение");
	ЗначениеИзКонтейнера = УИ_ОбщегоНазначенияКлиентСервер.ЗначениеПоляСКонтейнеромЗначения(ЭтотОбъект,
																							СтруктураХраненияПоля);

	Возврат УИ_ОбщегоНазначения.ЗначениеХранилищаКонтейнераХранилищаЗначенияИзПроизвользоногоЗначения(ЗначениеИзКонтейнера);
КонецФункции

&НаСервере
Функция ХранилищеЗначенияИзЗначенияФормы()
	СтруктураХраненияПоля = УИ_ОбщегоНазначенияКлиентСервер.НовыйСтруктураХраненияРеквизитаНаФормеСКонейнером("Значение");
	ЗначениеИзКонтейнера = УИ_ОбщегоНазначенияКлиентСервер.ЗначениеПоляСКонтейнеромЗначения(ЭтотОбъект,
																							СтруктураХраненияПоля);
	Возврат Новый ХранилищеЗначения(ЗначениеИзКонтейнера, Новый СжатиеДанных(9));
КонецФункции

#КонецОбласти
